Macアプリと連携する独自拡張子の作り方


概要

独自拡張子が欲しかったのです。どうせ内容はテキストなんですけど。

ダブルクリックしたら特定のアプリが起動する的な。

はい。



.byaa拡張子のファイルをダブルクリックすると開くアプリケーションを作る

必要な設定は2つ。


・AppDelegateに、

- (BOOL)application:(NSApplication * )theApplication openFile:(NSString * )filename

メソッドを書く


・Xcode > ProjectNavigator > TARGETS > なんかtarget > Info > の下の方の、Document Types 項目の+を押す

スクリーンショット 2013-05-10 21.59.16.png

なんか設定画面が出来るので、Extensionsに形式を指定する。どっと要らない。


これだけ。



これだけで

.byaaファイルをダブルクリックすると、アプリが起動するようになる。


ダブルクリックで.byaaファイルを開くと、- (BOOL)application:(NSApplication * )theApplication openFile:(NSString * )filename メソッドに通知が行き、

filenameにダブルクリックしたファイルパスが入るので、そこで読むとかすれば良いと思う。


ちなみに通知はアプリケーションのLaunchより速く発生する。


- (BOOL)application:(NSApplication * )theApplication openFile:(NSString * )filename

- (void)applicationDidFinishLaunching:(NSNotification * )aNotification

返り値は、ドキュメントいわく

YES if the file was successfully opened or NO if it was not.

オープンが旨くいったらYes返すと良いよ、他はNoでいいんじゃね

YESでもNOでもアプリは起動する。し、起動しててももちろん発生する。


何に使っているかというと、NSAppが発生させるNotificationのトリガーに使っている。

ただ、表立って効果がない。区別は出来る。 Notificationを無差別に拾ってみると、なんか違いがあると思う。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSApplication_Class/Reference/Reference.html



スクリーンショット 2013-05-10 21.56.15.png

いやーーーらっくちんだなァ~。